package com.yugao.fintech.draper.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yugao.fintech.draper.admin.entity.Tenant;
import com.yugao.fintech.draper.admin.param.TenantInfoVO;
import com.yugao.fintech.draper.admin.param.TenantQuery;

import java.util.List;

public interface TenantService extends IService<Tenant> {

	/**
	 * 校验租户信息是否合法
	 * @param id 租户id
	 */
	void validTenant(Long id);

	/**
	 * 获取所有租户id集合
	 * @return 所有租户id集合
	 */
	List<Long> getTenantIds();

	/**
	 * 根据name查询租户Id
	 */
	Long findTenantIdByName(String name);

	/**
	 * 保存租户信息
	 * @param tenant 租户信息
	 */
	Boolean addTenant(TenantInfoVO tenant);

	/**
	 * 修改
	 */
	Boolean updateTenant(TenantInfoVO tenantInfoVO);

	/**
	 * 分页查询租户信息
	 */
	IPage<TenantInfoVO> pageQuery(TenantQuery tenantQuery);

	/**
	 * 获取全部
	 */
	List<TenantInfoVO> findAll();

	/**
	 * 删除
	 */
	Boolean deleteByTenantId(Long id);

	/**
	 * 更新指定租户的角色菜单信息
	 * @param id 租户id
	 * @param menus 菜单信息
	 */
	void updateTenantRoleMenu(Long id, List<String> menus);

	/**
	 * 校验租户下账号数量
	 */
	void validCount();

	/**
	 * 根据id查询租户信息
	 * @param id 租户id
	 * @return 租户信息
	 */
	TenantInfoVO findById(Long id);

}